def outer_fn(x):
    print("outer fn called with:", x)
    def inner_fn(y):
        print("inner fn called with:", y)
        return x + y
    return inner_fn

ot = outer_fn(20)  # ot 是 inner_fn 的内存地址
print(ot(30))  # 50
print(ot(40))  # 60
print(ot(80))  # 60

# 使用闭包的过程中，一旦外函数被调用，返回了内函数的引用，虽然每次调用内函数会开启一个新的内函数，执行后释放
# 但闭包变量只有一份，每次调用内函数时，都在使用同一份闭包变量
